package org.springcloud.hystrix.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;

/**
 * @Description: 
 * 写一个测试类HelloService，通过之前注入ioc容器的restTemplate来消费service-hi服务的"/eurekaClient/home"接口，
 * 在这里我们直接用的程序名替代了具体的url地址，在ribbon中它会根据服务名来选择具体的服务实例，根据服务实例在请求的时候用具体的url替换掉服务名
 * @author huangjd
 * @date 2018年1月2日
 */
@Service
public class HystrixService {
	@Autowired
	private RestTemplate restTemplate;
	
	/**
	 *
	 * @param name
	 * @return
	 */
	@HystrixCommand(fallbackMethod="homeError")  // 该注解对该方法创建了熔断器的功能，并指定了fallbackMethod熔断方法
	public String homeService(String name){
		return restTemplate.getForObject("http://SERVICE-HI/eurekaClient/home/?name="+name, String.class);
	}
	
	public String homeError(String name){
		return "hello,"+name+",sorry error";
	}
}
